package com.example.furniture.entity;

import lombok.Data;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;

import java.math.BigDecimal;

/**
 * 家具实体类
 * 包含家具的详细信息
 * 
 * @author 家具商城系统
 * @version 1.0
 * @since 2024-01-01
 */
@Data
public class Furniture {
    
    /**
     * 家具ID，主键，自增
     */
    private Long id;
    
    /**
     * 家具名称，不能为空，长度2-200个字符
     */
    @NotBlank(message = "家具名称不能为空")
    @Size(min = 2, max = 200, message = "家具名称长度必须在2-200个字符之间")
    private String name;
    
    /**
     * 家具描述，可选，最大500个字符
     */
    @Size(max = 500, message = "描述长度不能超过500个字符")
    private String description;
    
    /**
     * 家具价格，不能为空，必须大于等于0
     */
    @NotNull(message = "价格不能为空")
    @DecimalMin(value = "0.0", message = "价格必须大于等于0")
    private BigDecimal price;
    
    /**
     * 库存数量，不能为空，必须大于等于0
     */
    @NotNull(message = "库存数量不能为空")
    @Min(value = 0, message = "库存数量必须大于等于0")
    private Integer stock;
    
    /**
     * 分类ID，外键，关联分类表
     */
    @NotNull(message = "必须选择家具分类")
    private Long categoryId;
}


